﻿using System;
using WinForms.Framework.Core;

namespace WinForms.Framework.Base
{
    /// <summary>
    /// BusinessClass 階層の基底クラスです。
    /// </summary>
    public abstract class BCBase
    {
        /// <summary>
        /// BC 階層の処理結果を取得または設定します。設定は BC 階層でのみ可能です。
        /// </summary>
        /// <remarks>UI 階層で BC 階層の結果を判定する場合は、これを使用してください。</remarks>
        public ReturnCodeBC ReturnCode { get; protected set; }

        /// <summary>
        /// BC 階層のメッセージを取得または設定します。設定は BC 階層でのみ可能です。
        /// </summary>
        /// <remarks>UI 階層で BC 階層のメッセージを取得する場合は、これを使用してください。</remarks>
        public string Message { get; protected set; }

        /// <summary>
        /// 処理時間を取得または設定します。設定は BC 階層でのみ可能です。
        /// </summary>
        /// <remarks> インスタンス生成時、または状態初期化時に現在日時が設定されます。 </remarks>
        public DateTime BusinessTime { get; protected set; }

        /// <summary>
        /// BCBase のインスタンスを生成します。
        /// </summary>
        protected BCBase()
        {
            InitializeState();
        }

        /// <summary>
        /// 現在の状態を初期化します。
        /// </summary>
        protected void InitializeState()
        {
            ReturnCode = ReturnCodeBC.Success;
            Message = null;
            BusinessTime = DateTime.Now;
        }
    }
}
